iT邦幫忙

2022 iThome 鐵人賽

DAY 9
0

本文目標:

  • AM/SM/UE policy data 介紹
  • AM/SM subscription data 介紹
  • Charging control

UDR 是實際儲存 5G Policies 的 Network Function,本篇文章會大致講解 Policy Data 的種類、以及這些資料都被哪些 NF 存取。

Policy Data

Policy Data 涵蓋了三種子類別,分別是:

1. AM Policy Data

Access and the Mobility-related Policies (AM Policy) 用於提供 UE 與 AMF 之間的 Registration,AMF 會透過與 PCF(AM-PCF)溝通取得這些資訊。

2. UE Policy Data

UE Policy Data 是所有透過 N1/N2 送往至 UE 的資訊集合,而這些資訊同樣也是在 Registration 時由 AMF 向 PCF(UE-PCF) 索取。

  • URSP (UE Route Selection Policy)

    URSP 幫助核心網路理解 Application 與網路切片的關聯性,透過 URSP,終端設備可以為不同的應用選擇不同的網路切片,滿足每個可能的應用場景。

  • ANDSP

3. SM Policy Data

SM Policy Data 存放與 PDU Session 相關的資料(QoS、計費資訊...等等),包含:

  • PCC Rules
  • QoS Policy
  • Charging Policy

這些資訊同樣會由 SMF 在處理相關流程時向 PCF(SM-PCF)索取。

Subscription Data

1. AM Subscription Data

  • Subscribed Slice Info
  • Access & Mobility Policies
    • Service Area Restrictions
    • RFSP Index
    • UE-AMBR

2. SM Subscription Data

  • Allowed PDU Session Types
  • default 5QI & ARP
  • Session-AMBR

PCC (Policy and Charging Control) 顧名思義就是負責處理計費相關的策略,根據 3GPP TS 23.503 的定義,5G 核網中的 PCF 要能夠:

  • 提供 AM Policy 給 UE,內容包含:
    • Access Network Discovery & Selection Policy (ANDSP)
      UE 可以根據 ANDSP 去選擇 non-3GPP access network。
    • UE Route Selection Policy (URSP)
      UE 可以根據 URSP 決定如何路由傳出流量。流量可以路由到已建立的 PDU Session,也可以 offload 到 PDU Session 外部的 non-3GPP access,或者可以用來觸發新的 PDU Session establishment。
  • PCF 必須要能夠過 SBI 與 AMF 進行互動,以提供 Access and Mobility Management related policies 給後者。
  • 管理 Packet Flow Descriptions,PFD 可以讓 UPF 用於偵測特定應用的 Packet flow。
  • 提供 Gating control 的決策,使 UPF 可以應用在每一個 service data flow。
  • 負責提供 QoS profile,讓 SMF 可以對每個 service data flow 套用對應的 QoS 資訊,以達到 QoS Control 的功能。
    • SMF 應能夠使用與 QoS Flow 相關的 PCC rule 確定 QoS Flow 的 Authorized QoS。此外,如果無法實現 QoS Flow 的目標,SMF 需要通知 PCF。
  • 能夠提供與 IP type、Ethernet type、Unstructured type 的 PDU Session 相關的資訊:
    • Session-AMBR
    • Default 5QI/ARP

SBI

根據上述內容可以得知,PCF 負責了 PCC 相關的多數內容與工作,為了達到特定的目的(如:實施計費、QoS Control...等等),PCF 需要與其他 Network Functions 合作。
本節會討論 PCF 與其他 NF 的互動(僅考慮 AMF、SMF 與 UDR)。

AMF

Npcf 以及 Namf 使 PCF 能夠對 AMF 提供 Access and Mobility Management related policies,相關功能如下:

  • 建立或移除 AM Policy Association(參考 TS 23.502 clause 4.16)。
  • 當 Access and Mobility Management 相關的 Policy Control Request Trigger 條件滿足時,PCF 必須提供 AMF 要求的 access and mobility management related policies。
  • PCF 提供 access and mobility management decision 給 AMF。
  • 通過 AMF 處理從 PCF 到 UE 的 transparent delivery UE access selection 和 PDU Session selection policy。

SMF

Npcf 以及 Nsmf 這兩個 SBI 使 PCF 能夠對 SMF 做到 dynamic policy and charging control,簡單來說:PCF 會向 UDR 查詢相關策略,並產生 PCC Rule 提供給 SMF,SMF 會根據這些規則告知 UPF 如何執行 QoS 控制。
Npcf 以及 Nsmf 提供了以下功能:

  • 建立或移除 SM Policy Association(參考 TS 23.502 clause 4.16)。
  • 當 Session Management 相關的 Policy Control Request Trigger 條件滿足時,PCF 必須提供 SMF 要求的 policy and charging control decision。
  • PCF 提供 policy and charging control decision 給 SMF。

UDR

Nudr interface 使 PCF 能夠存取 UDR 維護的 access policy control related subscription information 以及 application specific information。
Nudr interface 提供以下功能:

  • 要求 UDR 提供 policy control related subscription information 以及 application specific information。
  • UDR 通知 PCF 與 policy control related subscription information 有關的變動。

補充:與 AF 相關的功能請參考 TS 23.503 clause 5.3.5。

PCC Model

以下程式碼取自 free5GC OpenAPI 專案:

/*
 * Npcf_SMPolicyControl
 *
 * Session Management Policy Control Service
 *
 * API version: 1.0.1
 * Generated by: OpenAPI Generator (https://openapi-generator.tech)
 */

package models

type PccRule struct {
	// An array of IP flow packet filter information.
	FlowInfos []FlowInformation `json:"flowInfos,omitempty" yaml:"flowInfos" bson:"flowInfos" mapstructure:"FlowInfos"`
	// A reference to the application detection filter configured at the UPF.
	AppId string `json:"appId,omitempty" yaml:"appId" bson:"appId" mapstructure:"AppId"`
	// Represents the content version of some content.
	ContVer int32 `json:"contVer,omitempty" yaml:"contVer" bson:"contVer" mapstructure:"ContVer"`
	// Univocally identifies the PCC rule within a PDU session.
	PccRuleId     string        `json:"pccRuleId" yaml:"pccRuleId" bson:"pccRuleId" mapstructure:"PccRuleId"`
	Precedence    int32         `json:"precedence,omitempty" yaml:"precedence" bson:"precedence" mapstructure:"Precedence"`
	AfSigProtocol AfSigProtocol `json:"afSigProtocol,omitempty" yaml:"afSigProtocol" bson:"afSigProtocol" mapstructure:"AfSigProtocol"`
	// Indication of application relocation possibility.
	AppReloc bool `json:"appReloc,omitempty" yaml:"appReloc" bson:"appReloc" mapstructure:"AppReloc"`
	// A reference to the QoSData policy type decision type. It is the qosId described in subclause 5.6.2.8. (NOTE)
	RefQosData []string `json:"refQosData,omitempty" yaml:"refQosData" bson:"refQosData" mapstructure:"RefQosData"`
	// A reference to the TrafficControlData policy decision type. It is the tcId described in subclause 5.6.2.10. (NOTE)
	RefTcData []string `json:"refTcData,omitempty" yaml:"refTcData" bson:"refTcData" mapstructure:"RefTcData"`
	// A reference to the ChargingData policy decision type. It is the chgId described in subclause 5.6.2.11. (NOTE)
	RefChgData []string `json:"refChgData,omitempty" yaml:"refChgData" bson:"refChgData" mapstructure:"RefChgData"`
	// A reference to UsageMonitoringData policy decision type. It is the umId described in subclause 5.6.2.12. (NOTE)
	RefUmData []string `json:"refUmData,omitempty" yaml:"refUmData" bson:"refUmData" mapstructure:"RefUmData"`
	// A reference to the condition data. It is the condId described in subclause 5.6.2.9.
	RefCondData string `json:"refCondData,omitempty" yaml:"refCondData" bson:"refCondData" mapstructure:"RefCondData"`
}

在之前的章節中已經向大家介紹 OpenAPI 以及如何使用 OpenAPU Generator 產生 3GPP 定義的 model,從這些 pre-defined 的 model 我們可以清楚地知道 PCC Rule 應該包含什麼資料。
再以其中的 FlowInfos []FlowInformation 為例,如果我們想要知道這個 data type 包含了什麼資料,同樣也能夠在專案內部找到定義:

/*
 * Npcf_SMPolicyControl
 *
 * Session Management Policy Control Service
 *
 * API version: 1.0.1
 * Generated by: OpenAPI Generator (https://openapi-generator.tech)
 */

package models

type FlowInformation struct {
	// Defines a packet filter for an IP flow.Refer to subclause 5.4.2 of 3GPP TS 29.212 [23] for encoding.
	FlowDescription    string              `json:"flowDescription,omitempty" yaml:"flowDescription" bson:"flowDescription" mapstructure:"FlowDescription"`
	EthFlowDescription *EthFlowDescription `json:"ethFlowDescription,omitempty" yaml:"ethFlowDescription" bson:"ethFlowDescription" mapstructure:"EthFlowDescription"`
	// An identifier of packet filter.
	PackFiltId string `json:"packFiltId,omitempty" yaml:"packFiltId" bson:"packFiltId" mapstructure:"PackFiltId"`
	// The packet shall be sent to the UE.
	PacketFilterUsage bool `json:"packetFilterUsage,omitempty" yaml:"packetFilterUsage" bson:"packetFilterUsage" mapstructure:"PacketFilterUsage"`
	// Contains the Ipv4 Type-of-Service and mask field or the Ipv6 Traffic-Class field and mask field.
	TosTrafficClass string `json:"tosTrafficClass,omitempty" yaml:"tosTrafficClass" bson:"tosTrafficClass" mapstructure:"TosTrafficClass"`
	// the security parameter index of the IPSec packet.
	Spi string `json:"spi,omitempty" yaml:"spi" bson:"spi" mapstructure:"Spi"`
	// the Ipv6 flow label header field.
	FlowLabel     string          `json:"flowLabel,omitempty" yaml:"flowLabel" bson:"flowLabel" mapstructure:"FlowLabel"`
	FlowDirection FlowDirectionRm `json:"flowDirection,omitempty" yaml:"flowDirection" bson:"flowDirection" mapstructure:"FlowDirection"`
}

總結

截至目前,系列文已經介紹了各個 Network Function、PDU Session、QoS 以及 5G Polycies,本章節透過 PCC 的介紹將相關的資訊都串聯了起來,現在讀者們就可以從 Top to Bottom 的視角了解整個 5G 核心網路是如何做到 QoS Control 以及之前介紹到的複雜功能了!

References


上一篇
5G Security
下一篇
5G protocol stack
系列文
5G 核心網路與雲原生開發之亂彈阿翔36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言